package cz.vse.adventura.po1715.xforv00_forejt.gui._04_abstract;

import cz.pecinovsky.english.pojj.adv_framework.gui_stage.IGUI_04;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/*******************************************************************************
 * Instance třídy {@code InputPane} představují 
 *      vstupní pole, kam uživatel zadává příkazy
 *
 * @author    Vladimír FOREJT
 * @version   0.00.000
 */
public class InputPane extends JPanel {
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
    
    /*Výstupní oblast, do které se zobrazují informace o průběhu hry */
    private final JTextField inputField = new JTextField(25);
    
    /*GUI, které s panelem pracuje */
    private final IGUI_04 gui;
    
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================
    /***************************************************************************
     * Vytvoří stupní pole, do kterého uživatel zadává příkazy
     */
    public InputPane(IGUI_04 gui, ActionListener inputListener) {
        this.gui = gui;
        
        /** Posluchač, který čeká na stisk ENTER
         * a zpracovává příkazy ve vstupním poli */
        inputField.addActionListener(inputListener);
        
        JPanel input = new JPanel();
        JLabel prompt = new JLabel("Zadej příkaz: ");

        add(prompt);
        add(inputField);
    }
//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
    
    void setText(String text) {
        inputField.setText(text);
    }
    
    @Override
    public void requestFocus () {
        inputField.requestFocus();
    }
    
    String getText() {
        return inputField.getText();
    }
    
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================
    
   /***************************************************************************
     * Aktualizuje oblast zobrazující vstupní textové pole.
     * V této verzi stačí vstupní pole vyčistit a připravit pro další vstup.
     */
    void update() {
        inputField.setText("");
        inputField.requestFocus();
    }
    
    /***************************************************************************
     * Inicializuje oblast zobrazující vstupní textové pole.
     */
    void initialize() {
        //Zatím nepotřebuje inicializaci
    }
    
    
    
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        InputPane inst = new InputPane();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
